import { login as userLogin } from '~/api/user'
import Cookies from 'js-cookie'
import { setToken, removeToken, getToken } from '~/utils/jwt'

let token = getToken()

export const state = () => ({
  userInfo: { // 用户信息
    phone: '',
    username: '',
    token: ''
  },
  signUpStep: 0 // 登陆步骤
})

export const mutations = {
  // 设置注册步骤
  SET_SIGN_UP_SETP(state, step) {
    state.signUpStep = step
  },
  // 设置加载状态
  SET_LOAD_STATUS(state, status) {
    state.isLoading = status
  },

  // 设置用户登录信息
  SET_USER_LOGIN_INFO(state, data) {
    state.userInfo = data
  }
}

export const actions = {
  // 用户登录
  login({ commit }, data) {
    return new Promise((resolve, reject) => {
      userLogin(data).then(res => {
        // 登录成功
        if (res.code === 200) {
          const result = res.data
          commit('SET_USER_LOGIN_INFO', result)
          Cookies.set('loginInfo', JSON.stringify(result))
          // 存储jwt令牌
          setToken(result.token)
          token = getToken()
          resolve('success')
        } else {
          resolve('faild')
        }
      }).catch(err => {
        reject(err)
      })
    })
  },

  // 退出登陆
  signOut({ commit }) {
  // 清除Cookies中的用户信息
    Cookies.remove('loginInfo')
    commit('SET_USER_LOGIN_INFO', {})
    commit('cart/SET_SHOPPING_CART', [], { root: true })
    removeToken()
  },

  // 判断是否登陆
  isLogin({ commit }) {
    const user = Cookies.get('loginInfo')
    // token令牌是否存在或者过期
    token = getToken()
    // 都存在就继续保存信息
    if (user && token) {
      commit('SET_USER_LOGIN_INFO', JSON.parse(user))
    } else if (!token) {
    // 不存在就清空Cookies
      Cookies.remove('loginInfo')
    }
  }

}
